home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Champak 66
/
Vol 66.iso
/
games
/
bob_espo.swf
/
scripts
/
__Packages
/
MazeGenerator.as
< prev
next >
Wrap
Text File
|
2013-04-24
|
14KB
|
391 lines
class MazeGenerator
{
static var sLINKAGENAME_CORNER_UP = "mcPieceCornerUp";
static var sLINKAGENAME_CORNER_DOWN = "mcPieceCornerDown";
static var sLINKAGENAME_START = "mcPieceStart";
static var sLINKAGENAME_LATERAL = "mcPieceLateral";
static var sLINKAGENAME_RIGHTJCT = "mcPieceRightJct";
static var sLINKAGE_PANEL_START = "SB_Panneau_Start";
static var sLINKAGE_PANEL_FINISH = "SB_Panneau_Finish";
static var nUPPER_Y = 60;
static var nMIDDLE_Y = 200;
static var nLOWER_Y = 340;
static var nLEFT_X = 70;
static var nMIDDLE_LX = 220;
static var nMIDDLE_RX = 380;
static var nRIGHT_X = 530;
static var nFIRST_X = -100;
static var nSECOND_X = 140;
static var nTHIRD_X = 300;
static var nFOURTH_X = 460;
static var nFIRST_Y = 0;
static var nSECOND_Y = 120;
static var nTHIRD_Y = 280;
static var sNAME_SE = "mcStart";
static var sNAME_C1 = "mcCornerUpLeft";
static var sNAME_T1 = "mcLateralTopLeft";
static var sNAME_T2 = "mcLateralTopRight";
static var sNAME_C2 = "mcCornerUpRight";
static var sNAME_RJ = "mcRightJct";
static var sNAME_C3 = "mcCornerDownLeft";
static var sNAME_B1 = "mcLateralBottomLeft";
static var sNAME_B2 = "mcLateralBottomRight";
static var sNAME_C4 = "mcCornerDownRight";
static var nINDEX_SE = 0;
static var nINDEX_C1 = 1;
static var nINDEX_T1 = 2;
static var nINDEX_T2 = 3;
static var nINDEX_C2 = 4;
static var nINDEX_RJ = 5;
static var nINDEX_C3 = 6;
static var nINDEX_B1 = 7;
static var nINDEX_B2 = 8;
static var nINDEX_C4 = 9;
static var nUSED_SE_PIECE = 0;
static var nUSED_RJ_PIECE = 0;
static var sSTATE_START = "Start";
static var sSTATE_MIDWAY = "Midway";
static var sSTATE_FINISH = "Finish";
static var nSTART_PANEL_DEPTH = 1000000;
static var nFINISH_PANEL_DEPTH = 1000001;
static var nPANEL_X_SCALE = 151.2;
static var nPANEL_Y_SCALE = 130.6;
function MazeGenerator(_mcContainer)
{
this.mcContainer = _mcContainer;
this.aVLines = [[],[],[],[],[],[],[],[],[],[]];
this.aHLines = [[],[],[],[],[],[],[],[],[],[]];
this.nDepth = 0;
}
function addTrack(_bVertical, _mcLine)
{
var _loc4_ = this.getTabIndexByName(_mcLine._parent._parent._name);
if(_bVertical)
{
this.aVLines[_loc4_].push(_mcLine);
}
else
{
this.aHLines[_loc4_].push(_mcLine);
}
}
function getTabIndexByName(_nName)
{
var _loc3_ = 0;
switch(_nName)
{
case MazeGenerator.sNAME_SE:
_loc3_ = MazeGenerator.nINDEX_SE;
break;
case MazeGenerator.sNAME_RJ:
_loc3_ = MazeGenerator.nINDEX_RJ;
break;
case MazeGenerator.sNAME_C1:
_loc3_ = MazeGenerator.nINDEX_C1;
break;
case MazeGenerator.sNAME_C2:
_loc3_ = MazeGenerator.nINDEX_C2;
break;
case MazeGenerator.sNAME_C3:
_loc3_ = MazeGenerator.nINDEX_C3;
break;
case MazeGenerator.sNAME_C4:
_loc3_ = MazeGenerator.nINDEX_C4;
break;
case MazeGenerator.sNAME_B1:
_loc3_ = MazeGenerator.nINDEX_B1;
break;
case MazeGenerator.sNAME_B2:
_loc3_ = MazeGenerator.nINDEX_B2;
break;
case MazeGenerator.sNAME_T1:
_loc3_ = MazeGenerator.nINDEX_T1;
break;
case MazeGenerator.sNAME_T2:
_loc3_ = MazeGenerator.nINDEX_T2;
}
return _loc3_;
}
function getTabIndex(_nX, _nY)
{
var _loc4_ = 0;
if(_nX >= MazeGenerator.nFIRST_X && _nX < MazeGenerator.nSECOND_X)
{
if(_nY >= MazeGenerator.nFIRST_Y && _nY < MazeGenerator.nSECOND_Y)
{
_loc4_ = MazeGenerator.nINDEX_C1;
}
else if(_nY >= MazeGenerator.nSECOND_Y && _nY < MazeGenerator.nTHIRD_Y)
{
_loc4_ = MazeGenerator.nINDEX_SE;
}
else
{
_loc4_ = MazeGenerator.nINDEX_C3;
}
}
else if(_nX >= MazeGenerator.nSECOND_X && _nX < MazeGenerator.nTHIRD_X)
{
if(_nY >= MazeGenerator.nFIRST_Y && _nY < MazeGenerator.nSECOND_Y)
{
_loc4_ = MazeGenerator.nINDEX_T1;
}
else
{
_loc4_ = MazeGenerator.nINDEX_B1;
}
}
else if(_nX >= MazeGenerator.nTHIRD_X && _nX < MazeGenerator.nFOURTH_X)
{
if(_nY >= MazeGenerator.nFIRST_Y && _nY < MazeGenerator.nSECOND_Y)
{
_loc4_ = MazeGenerator.nINDEX_T2;
}
else
{
_loc4_ = MazeGenerator.nINDEX_B2;
}
}
else if(_nY >= MazeGenerator.nFIRST_Y && _nY < MazeGenerator.nSECOND_Y)
{
_loc4_ = MazeGenerator.nINDEX_C2;
}
else if(_nY >= MazeGenerator.nSECOND_Y && _nY < MazeGenerator.nTHIRD_Y)
{
_loc4_ = MazeGenerator.nINDEX_RJ;
}
else
{
_loc4_ = MazeGenerator.nINDEX_C4;
}
return _loc4_;
}
function generate()
{
this.generateStart();
this.generateLaterals();
this.generateCorners();
this.generateRightJct();
}
function cleanUp()
{
this.mcPieceSE.removeMovieClip();
this.mcPieceC1.removeMovieClip();
this.mcPieceT1.removeMovieClip();
this.mcPieceT2.removeMovieClip();
this.mcPieceC2.removeMovieClip();
this.mcPieceRJ.removeMovieClip();
this.mcPieceC3.removeMovieClip();
this.mcPieceB1.removeMovieClip();
this.mcPieceB2.removeMovieClip();
this.mcPieceC4.removeMovieClip();
this.mcContainer.mcPanelStart.removeMovieClip();
this.mcContainer.mcPanelFinish.removeMovieClip();
}
function isPieceFlipped(_nIndex)
{
var _loc3_ = false;
if(_nIndex == MazeGenerator.nINDEX_B1 && this.mcPieceB1._xscale == -100)
{
_loc3_ = true;
}
else if(_nIndex == MazeGenerator.nINDEX_B2 && this.mcPieceB2._xscale == -100)
{
_loc3_ = true;
}
else if(_nIndex == MazeGenerator.nINDEX_C1 && this.mcPieceC1._xscale == -100)
{
_loc3_ = true;
}
else if(_nIndex == MazeGenerator.nINDEX_C2 && this.mcPieceC2._xscale == -100)
{
_loc3_ = true;
}
else if(_nIndex == MazeGenerator.nINDEX_C3 && this.mcPieceC3._xscale == -100)
{
_loc3_ = true;
}
else if(_nIndex == MazeGenerator.nINDEX_C4 && this.mcPieceC4._xscale == -100)
{
_loc3_ = true;
}
else if(_nIndex == MazeGenerator.nINDEX_RJ && this.mcPieceRJ._xscale == -100)
{
_loc3_ = true;
}
else if(_nIndex == MazeGenerator.nINDEX_SE && this.mcPieceSE._xscale == -100)
{
_loc3_ = true;
}
else if(_nIndex == MazeGenerator.nINDEX_T1 && this.mcPieceT1._xscale == -100)
{
_loc3_ = true;
}
else if(_nIndex == MazeGenerator.nINDEX_T2 && this.mcPieceT2._xscale == -100)
{
_loc3_ = true;
}
return _loc3_;
}
function generateStart()
{
var _loc2_ = 0;
if(CTRLGame.getRef().Level == CTRLGame.nLEVEL1)
{
_loc2_ = Math.round(Math.random() * 1);
}
else if(MazeGenerator.nUSED_SE_PIECE == 0)
{
_loc2_ = 1;
}
else
{
_loc2_ = 0;
}
this.mcPieceSE = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_START,MazeGenerator.sNAME_SE,this.nDepth++);
this.mcPieceSE.gotoAndStop(_loc2_ + 1);
this.mcPieceSE._x = MazeGenerator.nLEFT_X;
this.mcPieceSE._y = MazeGenerator.nMIDDLE_Y;
MazeGenerator.nUSED_SE_PIECE = _loc2_;
var _loc3_ = CTRLGame.getRef().addObjectViaDummy(this.mcPieceSE.piece.mcPanelStart);
var _loc4_ = this.mcContainer.attachMovie(MazeGenerator.sLINKAGE_PANEL_START,"mcPanelStart",1000000);
_loc4_._x = _loc3_.x;
_loc4_._y = _loc3_.y;
_loc4_._xscale = MazeGenerator.nPANEL_X_SCALE;
_loc4_._yscale = MazeGenerator.nPANEL_Y_SCALE;
_loc3_ = CTRLGame.getRef().addObjectViaDummy(this.mcPieceSE.piece.mcPanelFinish);
var _loc5_ = this.mcContainer.attachMovie(MazeGenerator.sLINKAGE_PANEL_FINISH,"mcPanelFinish",1000001);
_loc5_._x = _loc3_.x;
_loc5_._y = _loc3_.y;
_loc5_._xscale = MazeGenerator.nPANEL_X_SCALE;
_loc5_._yscale = MazeGenerator.nPANEL_Y_SCALE;
if(CTRLGame.getRef().Level == CTRLGame.nLEVEL1)
{
_loc4_.gotoAndStop(MazeGenerator.sSTATE_START);
_loc5_.gotoAndStop(MazeGenerator.sSTATE_MIDWAY);
}
else
{
_loc4_.gotoAndStop(MazeGenerator.sSTATE_MIDWAY);
_loc5_.gotoAndStop(MazeGenerator.sSTATE_FINISH);
}
}
function generateLaterals()
{
var _loc2_ = [1,2,3,4];
var _loc3_ = 0;
var _loc4_ = false;
_loc3_ = Math.round(Math.random() * (_loc2_.length - 1));
this.mcPieceT1 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_LATERAL,MazeGenerator.sNAME_T1,this.nDepth++);
this.mcPieceT1.gotoAndStop(_loc2_[_loc3_]);
_loc4_ = !!Math.round(Math.random());
if(_loc4_)
{
this.flipPiece(this.mcPieceT1);
}
this.mcPieceT1._x = MazeGenerator.nMIDDLE_LX;
this.mcPieceT1._y = MazeGenerator.nUPPER_Y;
_loc2_.splice(_loc3_,1);
_loc3_ = Math.round(Math.random() * (_loc2_.length - 1));
this.mcPieceT2 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_LATERAL,MazeGenerator.sNAME_T2,this.nDepth++);
this.mcPieceT2.gotoAndStop(_loc2_[_loc3_]);
_loc4_ = !!Math.round(Math.random());
if(_loc4_)
{
this.flipPiece(this.mcPieceT2);
}
this.mcPieceT2._x = MazeGenerator.nMIDDLE_RX;
this.mcPieceT2._y = MazeGenerator.nUPPER_Y;
_loc2_.splice(_loc3_,1);
_loc3_ = Math.round(Math.random() * (_loc2_.length - 1));
this.mcPieceB1 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_LATERAL,MazeGenerator.sNAME_B1,this.nDepth++);
this.mcPieceB1.gotoAndStop(_loc2_[_loc3_]);
_loc4_ = !!Math.round(Math.random());
if(_loc4_)
{
this.flipPiece(this.mcPieceB1);
}
this.mcPieceB1._x = MazeGenerator.nMIDDLE_LX;
this.mcPieceB1._y = MazeGenerator.nLOWER_Y;
_loc2_.splice(_loc3_,1);
this.mcPieceB2 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_LATERAL,MazeGenerator.sNAME_B2,this.nDepth++);
this.mcPieceB2.gotoAndStop(_loc2_[0]);
_loc4_ = !!Math.round(Math.random());
if(_loc4_)
{
this.flipPiece(this.mcPieceB2);
}
this.mcPieceB2._x = MazeGenerator.nMIDDLE_RX;
this.mcPieceB2._y = MazeGenerator.nLOWER_Y;
}
function generateCorners()
{
var _loc2_ = [1,2];
var _loc3_ = [1,2];
var _loc4_ = 0;
_loc4_ = Math.round(Math.random() * (_loc2_.length - 1));
this.mcPieceC1 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_CORNER_UP,MazeGenerator.sNAME_C1,this.nDepth++);
this.mcPieceC1.gotoAndStop(_loc2_[_loc4_]);
this.mcPieceC1._x = MazeGenerator.nLEFT_X;
this.mcPieceC1._y = MazeGenerator.nUPPER_Y;
_loc2_.splice(_loc4_,1);
this.mcPieceC2 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_CORNER_UP,MazeGenerator.sNAME_C2,this.nDepth++);
this.mcPieceC2.gotoAndStop(_loc2_[0]);
this.mcPieceC2._x = MazeGenerator.nRIGHT_X;
this.mcPieceC2._y = MazeGenerator.nUPPER_Y;
this.flipPiece(this.mcPieceC2);
_loc4_ = Math.round(Math.random() * (_loc3_.length - 1));
this.mcPieceC3 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_CORNER_DOWN,MazeGenerator.sNAME_C3,this.nDepth++);
this.mcPieceC3.gotoAndStop(_loc3_[_loc4_]);
this.mcPieceC3._x = MazeGenerator.nLEFT_X;
this.mcPieceC3._y = MazeGenerator.nLOWER_Y;
_loc3_.splice(_loc4_,1);
_loc4_ = Math.round(Math.random() * (_loc3_.length - 1));
this.mcPieceC4 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_CORNER_DOWN,MazeGenerator.sNAME_C4,this.nDepth++);
this.mcPieceC4.gotoAndStop(_loc3_[0]);
this.mcPieceC4._x = MazeGenerator.nRIGHT_X;
this.mcPieceC4._y = MazeGenerator.nLOWER_Y;
this.flipPiece(this.mcPieceC4);
}
function generateRightJct()
{
var _loc2_ = 0;
if(CTRLGame.getRef().Level == CTRLGame.nLEVEL1)
{
_loc2_ = Math.round(Math.random() * 1);
}
else if(MazeGenerator.nUSED_RJ_PIECE == 0)
{
_loc2_ = 1;
}
else
{
_loc2_ = 0;
}
var _loc3_ = !!Math.round(Math.random());
this.mcPieceRJ = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_RIGHTJCT,MazeGenerator.sNAME_RJ,this.nDepth++);
this.mcPieceRJ.gotoAndStop(_loc2_ + 1);
if(_loc3_)
{
this.flipPiece(this.mcPieceRJ);
}
this.mcPieceRJ._x = MazeGenerator.nRIGHT_X;
this.mcPieceRJ._y = MazeGenerator.nMIDDLE_Y;
MazeGenerator.nUSED_RJ_PIECE = _loc2_;
}
function flipPiece(_mcPiece)
{
_mcPiece._xscale = -100;
}
function getVTracks(_nX, _nY)
{
var _loc4_ = this.getTabIndex(_nX,_nY);
return this.aVLines[_loc4_];
}
function getHTracks(_nX, _nY)
{
var _loc4_ = this.getTabIndex(_nX,_nY);
return this.aHLines[_loc4_];
}
}